# ifndef __Ellipsoid_H_
# define __Ellipsoid_H_

struct CEllipsoid {
	const string_t strName;

	// The semi-major axis.
	const double a;
	// The flattening.
	const double f;

	// The eccentricity^2.
	const double e2;
	const double e1, ee2;

	CEllipsoid (const string_t & _strName, double _a, double _f) :
		strName (_strName),
		a (_a),
		f (_f),
		e2 (2*_f - _f*_f),
		e1 ((1 - ::sqrt (1 - e2))/(1 + ::sqrt (1 - e2))),
		ee2 (e2/(1 - e2))
	{}
};

extern const CEllipsoid c_eAiry1830;
extern const CEllipsoid c_eAiryMod;
extern const CEllipsoid c_eAustralian;
extern const CEllipsoid c_eBessel1841;
extern const CEllipsoid c_eBesselNamibia;
extern const CEllipsoid c_eBesselNorway;
extern const CEllipsoid c_eClarke1858;
extern const CEllipsoid c_eClarke1866;
extern const CEllipsoid c_eClarke1880;
extern const CEllipsoid c_eClarkeIGN;
extern const CEllipsoid c_eClarkePalestine;
extern const CEllipsoid c_eEverest1948;
extern const CEllipsoid c_eEverestIndia;
extern const CEllipsoid c_eEverestIndia56;
extern const CEllipsoid c_eEverestMalasia;
extern const CEllipsoid c_eEverestPakistan;
extern const CEllipsoid c_eEverestSS;
extern const CEllipsoid c_eEverestTimbalai;
extern const CEllipsoid c_eFischer1960;
extern const CEllipsoid c_eGRS80;
extern const CEllipsoid c_eHayford;
extern const CEllipsoid c_eHelmert;
extern const CEllipsoid c_eHough;
extern const CEllipsoid c_eIndonesian;
extern const CEllipsoid c_eInternational;
extern const CEllipsoid c_eKrasovsky1940;
extern const CEllipsoid c_eSA1969;
extern const CEllipsoid c_eWGS72;
extern const CEllipsoid c_eWGS84;

//extern const CEllipsoid g_Ellipsoids [];
//extern const size_t c_cEllipsoids;

# endif // __Ellipsoid_H_